package com.ideaplugin.datamanager.service;

import com.ideaplugin.datamanager.model.common.PageRequest;
import com.ideaplugin.datamanager.model.common.PageResult;
import com.ideaplugin.datamanager.model.request.ListTablesBySchemaNameParam;
import com.ideaplugin.datamanager.model.request.TableInfoParam;
import com.ideaplugin.datamanager.model.response.DataSourceInfoVo;
import com.ideaplugin.datamanager.model.response.SchemaTableInfoVo;
import com.ideaplugin.datamanager.model.response.TableInfoVo;

import java.util.List;


public interface TableInfoService {
    /**
     * 分页查询全部
     *
     * @return List
     */
    PageResult<TableInfoVo> page(PageRequest<TableInfoParam> pageBase);

    /**
     * 增加或修改
     *
     * @param param
     */
    boolean saveOrUpdate(TableInfoParam param);

    /**
     * 删除
     */
    boolean delete(Long id);

    /**
     * 根据表名自动生成相关配置
     *
     * @param fullTableName 库名.表名
     * @return
     */
    boolean importByTableName(String fullTableName, Long tableInfoId);

    /**
     * 根据库名查所有表
     *
     * @param param 库名
     * @return
     */
    List<SchemaTableInfoVo> listTablesBySchemaName(ListTablesBySchemaNameParam param);

    /**
     * 查数据源下面的所有库名
     *
     * @param dataSourceName
     * @return
     */
    List<String> listSchemaByDataSource(String dataSourceName);

    /**
     * 查所有数据源
     *
     * @param
     * @return
     */
    List<DataSourceInfoVo> listDataSource();


    TableInfoVo getById(Long id);

}
